/**
 * 使用dll技术，对某些库（第三方库：jquey,react、vue...）进行单独打包
 *  运行webpack时，默认查找webpack.config.js配置文件
 * 需求：需要运行webpack.dll.justify
 *    --> webpack --config webpack.dll.js
 * 
 * 作用：将来就不要重复打包了，并通过manifest记录映射关系
 *  优化了重复打包
 * 
 * extrnals 不需要打包通过cdn引入
 * dll打包一次（资源放在自己服务器的时候通过这种方式）
 */
const {resolve} = require('path')
const webpack = require('webpack')
module.exports = {
  // 打包jquery同时定义jquery向外暴露的名称
  entry: {
    // 最终打包生成的[name] ---> jquery
    jquery: ['jquery']
  },
  output: {
    filename: '[name].js',
    path: resolve(__dirname, 'dll'),
    // 打包的库李面向外暴露出去的内容叫什么名字
    library: '[name]_[hash]',
  },
  plugins: [
    // 打包生成一个manifest.json --> 提供和jquery映射
    new webpack.DllPlugin({
      name: '[name]_[hash]', // 映射库的暴露的内容名称
      path: resolve(__dirname, 'dll/manifest.json'),  // 输出文件路径
    })
  ],
  mode: 'production'
}